﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
// using para usar el modelo
using MVC3Razor.Models;
// Para Seguridad de la aplicación
using System.Security;

namespace MVC3Razor.Controllers
{
    [Authorize(Roles="Administrador")]    
    public class DatosUserController : Controller
    {         
        
        // Utilizando el modelo Users        
        private static Users usuarios = new Users();

        // Creamos un ActionResult para la lista de usuarios 
        public ActionResult UsuariosList()
        {
            return View(usuarios.listaUsuario);
        }

        // Creamos un ActionResult para el detalle de nuestros usuarios
        public ViewResult DetailsUser(string id)
        {
            return View(usuarios.GetUser(id));
        }

        // Creamos un ActionResult para la edicion del usuario
        public ViewResult EditUser(string id)
        {
            return View(usuarios.GetUser(id));
        }

        // Creamos la respuesta de la edición cuando se haga un post.
        [HttpPost]
        public ViewResult EditUser(UserModel us)
        {
            if (!TryUpdateModel(us))
            {
                ViewBag.updateError = "Error de actualización";
                return View(us);
            }

            usuarios.Update(us);
            return View("DetailsUser", us);
        }

        // Creamos la Page de Creación de Usuario
        public ViewResult CreateUser()
        {
            return View(new UserModel());
        }

        [HttpPost]
        public ViewResult CreateUser(UserModel us)
        {
            // Consultamos si existe
            if (!TryUpdateModel(us))
            {
                ViewBag.updateError = "La creación de usuario a fallado";
                return View(us);
            }
            usuarios.Create(us);
            return View("DetailsUser", us);
        }

        // Creamos la Page de Eliminar Usuario
        public ViewResult DeleteUser(string id)
        {
            return View(usuarios.GetUser(id));
        }
        [HttpPost]
        public RedirectToRouteResult DeleteUser(string id, FormCollection collection)
        {
            usuarios.Remove(id);
            return RedirectToAction("UsuariosList");
        }
    }
}
